Read the file, remove the multiple line (but it saves one of them) in memory and put the contents back to the file (overwriting) and create a backup file with the original file.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace DelMultiLine {
class Program {
static void Main(string[] args) {
if (args.Count() == 0 || args.Count() > 2) {
Console.WriteLine("\nDelMultiLine (by Enrico Rossini - puresourcecode.com)");
Console.WriteLine("-----------------------------------------------------------------------");
Console.WriteLine("Remove duplicate line in a file\n");
Console.WriteLine("Usage:");
Console.WriteLine(" delmultiline <Filename> <resultFilename>\n");
Console.WriteLine("filename: define a full path for the file you want to elaborate");
Console.WriteLine("resultFilename: define the full path for the original file for a backup");
Environment.Exit(0);
}
string file1 = args[0];
string file2 = "";
if (args.Count() == 1) {
if (string.IsNullOrEmpty(file2)) {
file2 = file1 + ".old";
}
else {
file2 = args[1];
}
}
Console.WriteLine(string.Format("Reading {0} in progress...", args[0]));
string[] lines = File.ReadAllLines(file1);
List<string> newline = new List<string>();
for (int i = 0; i < lines.Length; i++) {
newline.Add(lines[i]);
}
Console.WriteLine("Deleting multiple line in progress...");
for (int i = 0; i < lines.Length; i++) {
List<string> temp = new List<string>();
int duplicate_count = 0;
for (int j = newline.Count - 1; j >= 0; j--) {
//checking for duplicate records
if (lines[i] != newline[j])
temp.Add(newline[j]);
else {
duplicate_count++;
if (duplicate_count == 1)
temp.Add(lines[i]);
}
}
newline = temp;
}
// reverse the array
newline.Reverse();
//assigning into a string array
string[] newFile = newline.ToArray();
newline.Sort();
// move the original file in a new location
Console.WriteLine(string.Format("Copying original file in {0}", args[0]));
File.Move(file1, file2);
//now writing the data to a text file
Console.WriteLine(string.Format("Write new file {0}", args[0]));
File.WriteAllLines(file1, newFile);
Console.WriteLine("Convertion is finished.");
Console.WriteLine("\nPress any key to continue...");
Console.ReadLine();
}
}
}
Happy coding!